Meeting rooms (meeting time intervals)

Time: O(NlogN); Space: O(N)

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],…] (si < ei), determine if a person could attend all meetings.

Example 1:

Input: intervals: [0, 30], [5, 10], [15, 20]

Output: False

Example 2:

Input: intervals: [7, 10], [2, 4]

Output: True

[1]:
class Interval(object):
    """
    Definition for an interval
    """
    def __init__(self, start=0, end=0):
        self.start = start
        self.end = end
[2]:
class Solution1(object):
    def canAttendMeetings(self, intervals):
        '''
        :type intervals: [Interval[]]
        :rtype: bool
        '''
        intervals.sort(key=lambda x: x.start)

        for i in range(1, len(intervals)):
            if intervals[i].start < intervals[i-1].end:
                return False
        return True
[3]:
s = Solution1()
a1 = Interval(0, 30)
a2 = Interval(5, 10)
a3 = Interval(15, 20)
assert s.canAttendMeetings([a1, a2, a3]) == False

a1 = Interval(7, 10)
a2 = Interval(2, 4)
assert s.canAttendMeetings([a1, a2]) == True